import pandas as pd
import os

def replace_test_to_abc(target,repString,file_path, output_path=None):
    """
    读取 Excel 文件并将所有内容为 "TEST" 的单元格替换为 "ABC"
    
    参数:
    file_path (str): 输入 Excel 文件路径
    output_path (str, optional): 输出 Excel 文件路径。如果为 None，则覆盖原文件
    
    返回:
    None
    """
    try:
        # 读取 Excel 文件
        df = pd.read_excel(file_path)
        
        # 将所有内容为 "TEST" 的单元格替换为 "ABC"
        df = df.replace(target, repString)
        
        # 如果未指定输出路径，则覆盖原文件
        if output_path is None:
            output_path = file_path
            
        # 保存修改后的 DataFrame 到 Excel
        with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
            df.to_excel(writer, sheet_name="Sheet",index=False)
             # 获取指定工作表
            worksheet = writer.sheets['Sheet']
            
            # 设置 A 列的列宽为 20
            worksheet.column_dimensions['B'].width = 100
        
        
        print(f"处理完成，文件已保存至: {output_path}")
        
    except Exception as e:
        print(f"处理过程中发生错误: {e}")

def batch_replace(target,repString,file_dir):
    """
    批量替换 Excel 文件中的内容。
    
    参数:
    file_path (str): 输入 Excel 文件路径
    output_path (str, optional): 输出 Excel 文件路径。如果为 None，则覆盖原文件
    target (str): 要替换的目标字符串
    repString (str): 替换为的字符串
    
    返回:
    None
    """
    file_list = os.listdir(file_dir)
    for file in file_list:
        if ".xlsx" in file or ".xls" in file:
            file_path = os.path.join(file_dir, file)
            replace_test_to_abc(target,repString,file_path)


if __name__ == "__main__":
    # 替换excel单元内容
    batch_replace("黄大翔","康辉",r"f:\txt\网游之无限\网游之无限1")
    # replace_test_to_abc("吴棠","白客",r"E:\txt\网游之无限\网游之无限1\第二章_一举折花天下知.xlsx", output_path=r"E:\txt\网游之无限\网游之无限\第三章_校园偏逢同道人1.xlsx")

    # file_list = os.listdir(r"E:\txt\网游之无限\网游之无限")
    # for file in file_list:
    #     if file.endswith(".xls"):
    #         old_file_path = os.path.join(r"E:\txt\网游之无限\网游之无限", file)
    #         new_file_path = os.path.join(r"E:\txt\网游之无限\网游之无限", file.replace(".xls",".xlsx"))
    #         os.rename(old_file_path,new_file_path)
